/*
 *  Copyright (c) 2012 Alaitsev I.K.
 *  Permission is hereby granted, free of charge, to any person obtaining a copy of this software
 *  and associated documentation files (the "Software"), to deal in the Software without restriction,
 *  including without limitation the rights to use, copy, modify, merge, publish, distribute,
 *  sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
 *  furnished to do so, subject to the following conditions:
 *
 *  The above copyright notice and this permission notice shall be included in all copies or
 *  substantial portions of the Software.
 *
 *  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT
 *  NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
 *  NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
 *  DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 *  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/

#ifndef CORE_GRAPHICS_VIEW_ADAPTER_H
#define CORE_GRAPHICS_VIEW_ADAPTER_H

#include <QGraphicsView>

/*
 *  Выбор версии реализации. на данный момент обе версии тестовые, но версия QGRAPHICSVIEW_BASED
 *  хотя бы что-то рисует.
*/

#define QCUSTOMPLOT_BASED

#ifdef QCUSTOMPLOT_BASED
#include "qcustomplot.h"
#endif

class Core;

/*
 *  NOTE:
 *    Рассмотреть возможность использования какой-либо библиотеки для рисования графиков.
*/
class Core_Visualisation_Cylinder :
    #ifdef QCUSTOMPLOT_BASED
    public QCustomPlot
    #endif
{
  Q_OBJECT
public:
  explicit Core_Visualisation_Cylinder(QWidget *parent = 0);
  Core* core (Core* in_new_value = nullptr);

signals:

public slots:
  void update_visualisation ();

private:
  Core*                 _core;
#ifdef QCUSTOMPLOT_BASED
  QCPGraph*           _external_electrode;
  QCPGraph*           _internal_electrode;
  QVector <QCPCurve*> _equipotential_lines;
  QVector <QCPCurve*> _l;
#endif
protected:
  void resizeEvent(QResizeEvent *event);
};

#endif // CORE_GRAPHICS_VIEW_ADAPTER_H
